package jason.controller;

import com.alibaba.csp.sentinel.annotation.SentinelResource;
import com.alibaba.csp.sentinel.slots.block.BlockException;
import com.jason.entities.JsonData;
import com.jason.entities.Payment;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
@Slf4j
public class TestController {


        @GetMapping("/testA")
        public String testA()
        {
            return "------testA";
        }

        @GetMapping("/testB")
        public String testB()
        {
            return "------testB";
        }
        @GetMapping("/testC")
        public String testC()
        {

            log.info("异常比例");
            int age=10/0;
            return "------testD";
        }
        @GetMapping("/testHotKey")
        @SentinelResource(value = "testHotKey",blockHandler = "deal_testHotKey")
        public String testHotKey(@RequestParam(value = "p1",required = false)String p1,
        @RequestParam(value = "p2",required = false)String p2){
            return "hot key";
        }

        public String deal_testHotKey(String p1, String p2, BlockException exception){

            return "deal_testHotKey !!exception!!";
        }
    @GetMapping("/rateLimit/byUrl")
    @SentinelResource(value = "byUrl")
    public JsonData byUrl()
    {
        return new JsonData(200,"按url限流测试OK",new Payment(2020L,"serial002"));
    }
    @GetMapping("/rateLimit/CustomerBlockHandler")
    @SentinelResource(value = "CustomerBlockHandler")
    public JsonData CustomerBlockHandler()
    {

            return new JsonData(2020,"自定义的限流处理信息......CustomerBlockHandler",null);

    }

}
